#include <stdio.h>
#include <stdlib.h>
#include <dos.h>

#include "play.h"
#include "labirinto.h"
#include "sprite.h"
#include "pixmap.h"

//funcao que inicia o jogo, apresenta os menus, faz a entrada no modo grafico e chama funcoes do modulo de Jogo 
int main(){
	
	__dpmi_meminfo map;
	//entra em modo grafico
	char* v_base = enter_graphics(1, &map);
	int choice, entrada = 99;
	int escolhajogador;
	//apresenta sprite com o nome do jogo: labirinto
	Sprite * inicial = create_sprite(msginicial);
	draw_sprite_scaled(inicial, v_base, 640, 480);
	delay(3000);
	Sprite * jogador;
	clear_screen(0, v_base);
	//abandona o modo grafico
	leave_graphics(map);
	//apresentra o menu
	while(entrada != 0){
		printf("Menu: \n 1 - Jogar\n 0 - Sair\n");
		while(entrada > 1){
			scanf("%d", &entrada);
			switch(entrada){
				case 1:
					break;
				case 0:
					break;
				default:
					printf("Menu: \n 1 - Jogar\n 0 - Sair\n");
					break;
			}
		}
		choice = 0;

		if(entrada == 1){
			entrada = 99;
			printf("Escolha o labirinto(1,2,3):");
			while(choice < 1 || choice > 3){
				scanf("%d", &choice);
				if(choice >= 1 && choice <= 3){
					printf("Escolha o jogador(1,2,3):");
					while(escolhajogador < 1 || escolhajogador > 3){ 
						scanf("%d", &escolhajogador);
						switch(escolhajogador){
							case 1:
								jogador = create_sprite(Jogador);
								break;
							case 2:
								jogador = create_sprite(Jogador2);
								break;
							case 3:
								jogador = create_sprite(Jogador3);
								break;
							default:
								printf("Escolha um numero de 1 a 3\n");
								break;
						}
					}
					escolhajogador = 0;
				}
				switch(choice){
					case 1:
						v_base = enter_graphics(1, &map);
						clear_screen(0, v_base);
						labirinto1(v_base);
						jogar(jogador, 90, 5, 1, v_base, map);
						delay(2000);
						break;

					case 2:
						v_base = enter_graphics(1, &map);
						clear_screen(0, v_base);
						labirinto2(v_base);
						jogar(jogador, 10, 480-80, 2, v_base, map);
						delay(2000);
						break;
					
					case 3:
						v_base = enter_graphics(1, &map);
						clear_screen(0, v_base);
						labirinto3(v_base);
						jogar(jogador, 5, 480-48, 3, v_base, map);
						delay(2000);
						break;
					
					default:
						printf("Escolha um numero de 1 a 3\n");
						break;
				}
			}
		}
	}
	return 0;
}
